﻿#ifndef FLUIDCHUNKDEFS_INCLUDE
#define FLUIDCHUNKDEFS_INCLUDE

#define chunkResolution 4u // amount of voxels in width/height/depth

struct keyvalue
{
    uint key;
    uint handle;
};

uint3 chunkGridResolution; // height/width/depth of chunk grid
float3 chunkGridOrigin;
float voxelSize;

uint maxChunks;

uint VoxelID(uint3 coords)
{
    return coords.x + coords.y * chunkGridResolution.x + coords.z * chunkGridResolution.x * chunkGridResolution.y;
}

uint hash(uint k)
{
    k ^= k >> 16;
    k *= 0x85ebca6b;
    k ^= k >> 13;
    k *= 0xc2b2ae35;
    k ^= k >> 16;
    return k % maxChunks;
}

#endif